package file;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;

public class Demo1 {
    public static void main(String[] args) {
        File file = new File("test");
        File file1 = new File("test3");

        boolean bool = file.renameTo(file1);//把 file这个File对象的文件名修改成 -> file1这个File对象的文件名
        System.out.println(bool);

        //对于这个 renameTo 这个修改文件名字的操作呢，在操作系统的角度来说呢，可以把重命名和移动操作本质是一样的
        //演示一下：
        File file2 = new File("./test3");
        File file3 = new File("./src/test3");

        boolean rest = file2.renameTo(file3);//把 test3这个File对象呢移动到  scr这个文件下，并且对其进行修改名称
        System.out.println(rest);
    }

    public static void main6(String[] args) {
        //File file = new File("./test");
        //boolean bool = file.mkdir();// 创建 File对象代表的目录
        //但是 mkdir 不能创建多层目录，我们可以使用 mkdirs 来创建多层目录

        File file = new File("./test2/1/2");
        boolean bool = file.mkdirs();
        System.out.println(bool);
    }

    public static void main5(String[] args) {
        File file = new File("./");// 代表当前项目下的路径
        String[] strings = file.list();//返回 File对象的目录下的所有文件名
        //System.out.println(strings);//不能直接打印 strings 这个String[]，这样会返回 哈希值
        System.out.println(Arrays.toString(strings));// 要使用Arrays.toString() 进行对数组这个引用类型的打印

        File[] files = file.listFiles();// 返回 File对象的目录下的所有文件名，以File对象表示
        System.out.println(Arrays.toString(files));
    }

    public static void main4(String[] args) throws IOException, InterruptedException {
        File file = new File("./test.txt");
        //boolean bool = file.delete();//删除文件
        //System.out.println(bool);
        file.createNewFile();
        file.deleteOnExit();// 在进程结束之后才能进行删除文件操作
        Thread.sleep(10000);
    }

    public static void main3(String[] args) throws IOException {
        File file = new File("./test.txt");

        file.createNewFile();// 创建 File对象的这个文件

        System.out.println(file.exists());// 判断 File对象描述的⽂件是否真实存在
        System.out.println(file.isFile());// 判断 File对象代表的文件是否是一个普通文件
        System.out.println(file.isDirectory()); // 判断 File对象代表的文件是否是一个目录
    }

    public static void main2(String[] args) {
        //这里我们没有在 这个路径下创建这个文件，所以会是false
        File file = new File("./test.txt");

        System.out.println(file.exists());// 判断 File对象描述的⽂件是否真实存在
        System.out.println(file.isFile());// 判断 File对象代表的文件是否是一个普通文件
        System.out.println(file.isDirectory()); // 判断 File对象代表的文件是否是一个目录

    }

    public static void main1(String[] args) throws IOException {
        //File file = new File("D:/IDEA_cun/java-2025/h-2025.1.5/test.txt");
        File file = new File("./test.txt");
        // .. 表示当前路径的上一层路径
        // . 是表示当前所在的目录位置

        System.out.println(file.getParent());//返回 File对象的父目录文件路径
        System.out.println(file.getName());// 返回 File对象的纯文件名称
        System.out.println(file.getPath());// 返回 File对象的文件路径
        System.out.println(file.getAbsolutePath());// 返回 File对象的绝对路径
        System.out.println(file.getCanonicalPath());// 返回 File对象的修饰后的绝对路径
    }
}
